package com.shujia.scala

import java.nio.CharBuffer

object Demo14Fun4 {


  def main(args: Array[String]): Unit = {


    /**
      *
      * 匿名函数
      *
      */


    def fun1(f: String => Int) = {
      val i: Int = f("100")

      println(i)
    }


    def fun2(str: String): Int = str.toInt


    fun1(fun2)


    /**
      * 匿名函数
      *
      * => 左边式函数的参数
      * 参数类型也可以推断出来
      *
      *
      * => 右边式函数的返回值
      *
      * 返回值的类型会自动推断
      *
      */
    fun1((str: String) => {
      str.toInt
    })

    //如果函数只有一行大括号可以省略
    fun1((str: String) => str.toInt)

    //参数类型和返回值类型都可以推断出来
    fun1(str => str.toInt)


    //如果参数只用了一次可以使用_ 代替
    fun1(_.toInt)


    val lists: List[Int] = List(1, 2, 3, 4, 5, 6, 7)


    lists.foreach((i: Int) => println(i))

    lists.foreach(i => println(i))

    lists.foreach(println)


    ///匿名函数也可以有名字
    val f: String => Int = (str: String) => str.toInt


  }

}
